45 - 10.4.3 Kreiseln: Umlaufsperre [ID:25763]
50 von 208 angezeigt

Okay, kommen wir zunächst zur Umlaufsperre. Da schauen wir uns mal eine Definition an, gehen dann

kurz auf die Funktionsweise ein und im zweiten Teil betrachten wir dann Schlossalgorithmen,

die letztendlich eine Umlaufsperre ausmachen und wir diskutieren mal in so einer Zwischenzusammenfassung

die Effekte, die da möglicherweise auftreten können bei der Ausführung dieser Algorithmen.

Nun eigentlich mit der Umlaufsperre meint man ein Sperren durch eine schnelle Drehung. Man

könnte das durchaus mit so einer Art Drängelgitter vergleichen, wo denn halt wir mehrere

gleichzeitig Prozesse halt hätten. Die wollen ja alle in den selben kritischen Abschnitt rein

und drängeln sich dann sozusagen durch eine Art Gitter halt hindurch. Indes technisch gesehen

nicht wirklich ein solches Gitter, aber es hat eine gewisse Analogie. Wenn wir denn die Passierenden

eines solchen Gitters als Prozesse verstehen, die Blickwendung, die man in solch einem Drängelgitter

macht als eine Zustandsabfrage und dann der Umlauf selbst als eine Schleife verstehen,

dann kommt man eben auf dieses Sperren durch eine schnelle Drehung. So kann man das dann halt eben

auch sinnbildlich halt übernehmen. Letztendlich ist mit diesem Verfahren der Umlaufsperre ein

Kreiseln gemeint, das praktisch das Sperren von Prozessen steuert. Der Spin-Lock, Kreiseln für Spin

und Sperren übersetzt halt Lock und so kommt die Begrifflichkeit Spin-Lock letztendlich zustande.

Nehmen wir mal an, wir haben eine Operation Acquire, die sozusagen ein Eintrittsprotokoll

implementieren soll. Die hat dann durchaus die Semantik, nämlich den aktuellen Prozess zu

verzögern, solange eine Sperre, die man belegen möchte, gesetzt ist. Das ist das aktive Warten,

was dann diesen Prozess dann eben Kreiseln lässt, das sogenannte Busy Waiting. Diese Operation Acquire

würde die Sperre verhängen, sobald sie aufgehoben ist. Initial, wenn die Sperre frei ist, dann wird

die Acquire-Operation keine Verzögerung bewirken. Sie wird aber am Ende dafür Sorge tragen, dass

eben eine Sperre verhängt worden ist, sollten mehrere Prozesse zugleich halt eintreten. Muss

sichergestellt sein, dass am Ende nur einer dieser gleichzeitig Prozesse und dann schön

nacheinander alle weiteren Prozesse aus dieser Acquire-Operation austreten werden, um damit

dann eben doch in diesen durch Acquire geschützten kritischen Abschnitt den Eintreten zu können.

Die inverse Operation Release hebt letztendlich die Sperre nur noch auf. Sie wird im Regelfall bei

den allermeisten Protokollen, insbesondere die, die wir denn halt hier betrachten, den aktuellen

Prozess nicht verzögern. Letztendlich nur dadurch verzögern, dass natürlich so eine Release-Operation,

wir wissen, mehr Aufwand bedeutet, aber da steckt keine Schleife zum Beispiel drin. Da wird dann

nicht noch mal so eine Art Busy Waiting typischerweise betrieben. Es gibt denn alternative

Namen halt dafür. Sperren wird auch als Lock bezeichnet. Entsperren wäre dann halt entsprechend

die Anlock-Operation. So, die Prozesssteuerung, die wir denn halt vornehmen an so einer Art

Dringelgitter für den kritischen Abschnitt, manifestiert sich dann letztendlich in Verfahren,

die wir als Schloss-Algorithmen bezeichnen. Die Schloss-Algorithmen implementieren denn letztendlich

dieses Eintritts- und Austrittsprotokolle für diese kritische Abschnitte auf Basis solcher

Spin-Locks. Und das wollen wir uns mal im weiteren Verlauf ein bisschen genauer auch noch anschauen.

Ein paar grundsätzlichen Sachen zu diesem Spin-Lock. Zunächst muss man einfach wirklich beachten,

dass diese Umlaufsperre der Synchronisation gleichzeitig Prozesse an verschiedenen

Prozessoren dient. Verschiedene Prozessoren oder wenn wir jetzt an solche vielkernigen

Rechner denken, verschiedene Prozessorkerne. Denn alle diese Prozessoren, alle diese Rechenkerne

über gemeinsamen Speicher miteinander gekoppelt sind. Der entscheidende Punkt ist, man synchronisiert

eigentlich verschiedene Prozessoren, auf denen dann eben diese Prozessoren ablaufen. Es ist

eigentlich keine Technik, um mehrere Prozesse des selben Prozessors synchronisieren zu wollen. Kann

man natürlich auch machen, aber dafür sind die eigentlich nicht gedacht, diese Operation. Ist

es jedoch so, dass sich mehrere Prozesse des selben Prozessors praktisch synchronisieren müssen über

solch eine Umlaufsperre, dann ist für gewöhnlich zusätzlich noch eine unilaterale Sperre erforderlich,

um nämlich bestimmte Latenzen auftreten können und diese unangenehm sind. Denn einfach zu

vermeiden, das sind dann Latenzen, die einfach dadurch zustande kommen, dass Prozesse zu lange

darauf warten müssen, bis eine Sperre wieder freigegeben ist. Das sogenannte Lockholder

Preemption Problem, nämlich der Prozess, der die Sperre besitzt, verhindert ja praktisch die

Teil eines Kapitels:
10.4 Kreiseln

Zugänglich über

Offener Zugang

Dauer

00:23:21 Min

Aufnahmedatum

2020-12-04

Hochgeladen am

2020-12-05 01:58:40

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen